Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


meshchatx/src/backend/database/contacts.py fda9187e95d8b9cc8373c1de23cefce6928c241d (fda9187e) Text, 4.03 KB

Tff7b72from T7ee787.T7ee787provider Tff7b72import Te6edf3DatabaseProvider


Tff7b72class T56d364ContactsDAOTb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3providerTb4b4b4: Te6edf3DatabaseProviderTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffprovider Tff7b72= Te6edf3provider

Tff7b72def Td2a8ffadd_contactTb4b4b4(
Tff7b72selfTb4b4b4,
Te6edf3nameTb4b4b4,
Te6edf3remote_identity_hashTb4b4b4,
Te6edf3lxmf_addressTff7b72=Tff7b72NoneTb4b4b4,
Te6edf3lxst_addressTff7b72=Tff7b72NoneTb4b4b4,
Te6edf3preferred_ringtone_idTff7b72=Tff7b72NoneTb4b4b4,
Te6edf3custom_imageTff7b72=Tff7b72NoneTb4b4b4,
Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8ffexecuteTb4b4b4(
T8b949e"""
INSERT INTO contacts (name, remote_identity_hash, lxmf_address, lxst_address, preferred_ringtone_id, custom_image)
VALUES (?, ?, ?, ?, ?, ?)
ON CONFLICT(remote_identity_hash) DO UPDATE SET
name = EXCLUDED.name,
lxmf_address = COALESCE(EXCLUDED.lxmf_address, contacts.lxmf_address),
lxst_address = COALESCE(EXCLUDED.lxst_address, contacts.lxst_address),
preferred_ringtone_id = EXCLUDED.preferred_ringtone_id,
custom_image = EXCLUDED.custom_image,
updated_at = CURRENT_TIMESTAMP
"""Tb4b4b4,
Tb4b4b4(
Te6edf3nameTb4b4b4,
Te6edf3remote_identity_hashTb4b4b4,
Te6edf3lxmf_addressTb4b4b4,
Te6edf3lxst_addressTb4b4b4,
Te6edf3preferred_ringtone_idTb4b4b4,
Te6edf3custom_imageTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)

Tff7b72def Td2a8ffget_contactsTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3searchTff7b72=Tff7b72NoneTb4b4b4, Te6edf3limitTff7b72=T79c0ff100Tb4b4b4, Te6edf3offsetTff7b72=T79c0ff0Tb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3searchTb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8fffetchallTb4b4b4(
T8b949e"""
SELECT * FROM contacts
WHERE name LIKE ? OR remote_identity_hash LIKE ? OR lxmf_address LIKE ? OR lxst_address LIKE ?
ORDER BY name ASC LIMIT ? OFFSET ?
"""Tb4b4b4,
Tb4b4b4(
Ta5d6fffTa5d6ff"Ta5d6ff%Tffd700{Te6edf3searchTffd700}Ta5d6ff%Ta5d6ff"Tb4b4b4,
Ta5d6fffTa5d6ff"Ta5d6ff%Tffd700{Te6edf3searchTffd700}Ta5d6ff%Ta5d6ff"Tb4b4b4,
Ta5d6fffTa5d6ff"Ta5d6ff%Tffd700{Te6edf3searchTffd700}Ta5d6ff%Ta5d6ff"Tb4b4b4,
Ta5d6fffTa5d6ff"Ta5d6ff%Tffd700{Te6edf3searchTffd700}Ta5d6ff%Ta5d6ff"Tb4b4b4,
Te6edf3limitTb4b4b4,
Te6edf3offsetTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72return Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8fffetchallTb4b4b4(
Ta5d6ff"Ta5d6ffSELECT * FROM contacts ORDER BY name ASC LIMIT ? OFFSET ?Ta5d6ff"Tb4b4b4,
Tb4b4b4(Te6edf3limitTb4b4b4, Te6edf3offsetTb4b4b4)Tb4b4b4,
Tb4b4b4)

Tff7b72def Td2a8ffget_contactTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3contact_idTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8fffetchoneTb4b4b4(
Ta5d6ff"Ta5d6ffSELECT * FROM contacts WHERE id = ?Ta5d6ff"Tb4b4b4,
Tb4b4b4(Te6edf3contact_idTb4b4b4,Tb4b4b4)Tb4b4b4,
Tb4b4b4)

Tff7b72def Td2a8ffupdate_contactTb4b4b4(
Tff7b72selfTb4b4b4,
Te6edf3contact_idTb4b4b4,
Te6edf3nameTff7b72=Tff7b72NoneTb4b4b4,
Te6edf3remote_identity_hashTff7b72=Tff7b72NoneTb4b4b4,
Te6edf3lxmf_addressTff7b72=Tff7b72NoneTb4b4b4,
Te6edf3lxst_addressTff7b72=Tff7b72NoneTb4b4b4,
Te6edf3preferred_ringtone_idTff7b72=Tff7b72NoneTb4b4b4,
Te6edf3custom_imageTff7b72=Tff7b72NoneTb4b4b4,
Te6edf3clear_imageTff7b72=Tff7b72FalseTb4b4b4,
Tb4b4b4)Tb4b4b4:
Te6edf3updates Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3params Tff7b72= Tb4b4b4[Tb4b4b4]

Tff7b72if Te6edf3name Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Te6edf3updatesTff7b72.Td2a8ffappendTb4b4b4(Ta5d6ff"Ta5d6ffname = ?Ta5d6ff"Tb4b4b4)
Te6edf3paramsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3nameTb4b4b4)
Tff7b72if Te6edf3remote_identity_hash Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Te6edf3updatesTff7b72.Td2a8ffappendTb4b4b4(Ta5d6ff"Ta5d6ffremote_identity_hash = ?Ta5d6ff"Tb4b4b4)
Te6edf3paramsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3remote_identity_hashTb4b4b4)
Tff7b72if Te6edf3lxmf_address Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Te6edf3updatesTff7b72.Td2a8ffappendTb4b4b4(Ta5d6ff"Ta5d6fflxmf_address = ?Ta5d6ff"Tb4b4b4)
Te6edf3paramsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3lxmf_addressTb4b4b4)
Tff7b72if Te6edf3lxst_address Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Te6edf3updatesTff7b72.Td2a8ffappendTb4b4b4(Ta5d6ff"Ta5d6fflxst_address = ?Ta5d6ff"Tb4b4b4)
Te6edf3paramsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3lxst_addressTb4b4b4)
Tff7b72if Te6edf3preferred_ringtone_id Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Te6edf3updatesTff7b72.Td2a8ffappendTb4b4b4(Ta5d6ff"Ta5d6ffpreferred_ringtone_id = ?Ta5d6ff"Tb4b4b4)
Te6edf3paramsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3preferred_ringtone_idTb4b4b4)
Tff7b72if Te6edf3clear_imageTb4b4b4:
Te6edf3updatesTff7b72.Td2a8ffappendTb4b4b4(Ta5d6ff"Ta5d6ffcustom_image = NULLTa5d6ff"Tb4b4b4)
Tff7b72elif Te6edf3custom_image Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Te6edf3updatesTff7b72.Td2a8ffappendTb4b4b4(Ta5d6ff"Ta5d6ffcustom_image = ?Ta5d6ff"Tb4b4b4)
Te6edf3paramsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3custom_imageTb4b4b4)

Tff7b72if Tff7b72not Te6edf3updatesTb4b4b4:
Tff7b72return

Te6edf3updatesTff7b72.Td2a8ffappendTb4b4b4(Ta5d6ff"Ta5d6ffupdated_at = CURRENT_TIMESTAMPTa5d6ff"Tb4b4b4)
Te6edf3query Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffUPDATE contacts SET Tffd700{Ta5d6ff'Ta5d6ff, Ta5d6ff'Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3updatesTb4b4b4)Tffd700}Ta5d6ff WHERE id = ?Ta5d6ff"
Te6edf3paramsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3contact_idTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8ffexecuteTb4b4b4(Te6edf3queryTb4b4b4, Tffa657tupleTb4b4b4(Te6edf3paramsTb4b4b4)Tb4b4b4)

Tff7b72def Td2a8ffdelete_contactTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3contact_idTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8ffexecuteTb4b4b4(Ta5d6ff"Ta5d6ffDELETE FROM contacts WHERE id = ?Ta5d6ff"Tb4b4b4, Tb4b4b4(Te6edf3contact_idTb4b4b4,Tb4b4b4)Tb4b4b4)

Tff7b72def Td2a8ffget_contact_by_identity_hashTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3remote_identity_hashTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8fffetchoneTb4b4b4(
Ta5d6ff"Ta5d6ffSELECT * FROM contacts WHERE remote_identity_hash = ? OR lxmf_address = ? OR lxst_address = ?Ta5d6ff"Tb4b4b4,
Tb4b4b4(Te6edf3remote_identity_hashTb4b4b4, Te6edf3remote_identity_hashTb4b4b4, Te6edf3remote_identity_hashTb4b4b4)Tb4b4b4,
Tb4b4b4)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────